package Android.TestXMLHTTP;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

import Android.TestXMLHTTP.other.RSS;
import Android.TestXMLHTTP.other.RSS2;
import Android.TestXMLHTTP.parser.ChannelRefresh;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.LinearLayout;

/**
 * Demonstrates how to embed a WebView in your activity. Also demonstrates how
 * to have javascript in the WebView call into the activity, and how the
 * activity can invoke javascript.
 * <p>
 * In this example, clicking on the android in the WebView will result in a call
 * into the activities code in {@link DemoJavaScriptInterface#clickOnAndroid()}.
 * This code will turn around and invoke javascript using the
 * {@link WebView#loadUrl(String)} method.
 * <p>
 * Obviously all of this could have been accomplished without calling into the
 * activity and then back into javascript, but this code is intended to show how
 * to set up the code paths for this sort of communication.
 * 
 */
public class TestXMLHTTP extends Activity {

	private static final String LOG_TAG = "WebViewDemo";

	private WebView mWebView;

	private Handler mHandler = new Handler();

	@Override
	public void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		// setContentView(R.layout.main);
		LinearLayout ll = new LinearLayout(this);
		setContentView(ll);
		WebView wv = new WebView(this);
		ll.addView(wv);
		mWebView = wv;
		// mWebView = (WebView) findViewById(R.id.webview);

		WebSettings webSettings = mWebView.getSettings();
		webSettings.setSavePassword(false);
		webSettings.setSaveFormData(false);
		webSettings.setJavaScriptEnabled(true);
		webSettings.setSupportZoom(false);

		mWebView.setWebChromeClient(new MyWebChromeClient());

		mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

		mWebView.loadUrl("file:///android_asset/index1.html");
	}

	final class DemoJavaScriptInterface {

		private ChannelRefresh rss;
		
		DemoJavaScriptInterface() {
			rss = new ChannelRefresh();
		}

		/**
		 * This is not called on the UI thread. Post a runnable to invoke
		 * loadUrl on the UI thread.
		 */
		public void clickOnAndroid(final String rssfeed) {
		
			mHandler.post(new Runnable() {
				public void run() {
					
//					ArrayList<HashMap<String, String>> s = rss.parseFeed(rssfeed);
//					
//					String ret = "";
//
//
//					for (HashMap<String, String> h : s) {
////						Set <String> sleutels = h.keySet();
////					    Iterator<String> it = sleutels.iterator();
////					    while (it.hasNext()) {
////					        // Get element
////					        String element = it.next();
////					        ret += element + ":";
////					    }
//						String text =  "<a href='" + h.get("link") + "'>" + h.get("title") + "</a>" + h.get("description") + "<br/>";
//						System.out.println(text);
//						ret+=text;
//					}
					
					URL url;
					//String res = "<a href=\\\"http://tweakers.net/\\\">Tweakers.net</a>";
					//String res = "<b><li><a href=\\\"http://tweakers.net/\\\">Tweakers.net</a><br>Tweakers.net is de grootste hardwaresite en techcommunity van Nederland.</li></b><br /><ul><li><a href=\\\"http://tweakers.net/nieuws/59299/laatste-prerelease-windows-7-komt-in-mei.html\\\">'Laatste prerelease Windows 7 komt in mei'</a><br>Microsoft zal de laatste versie van Windows 7 die het uitbrengt voor het besturingssysteem in de winkels ligt in mei ter download aanbieden. Dat leert een inmiddels weer verwijderde pagina op de website van het softwarebedrijf.<img src=\\\"http://feeds2.feedburner.com/~r/tweakers/mixed/~4/nJpMMMPdKCk\\\" height=\\\"1\\\" width=\\\"1\\\"/></li><li><a href=\\\"http://tweakers.net/meuktracker/19998/joomla!-1510.html\\\">Joomla! 1.5.10</a><br>Het populaire  opensource-cms Joomla is  bijgewerkt naar versie 1.5.10. Joomla is de fonetische spelling van het woord  'Jumla', wat in het Swahili zoveel als 'alles samen' of 'in het geheel'  betekent. Het programma is een afsplitsing van Mambo en is een dynamisch, in php geschreven systeem waarmee  de gebruiker content kan beheren, organiseren en uitgeven. Het kan bijvoorbeeld  gebruikt worden ...<img src=\\\"http://feeds2.feedburner.com/~r/tweakers/mixed/~4/A_bejUp16Nw\\\" height=\\\"1\\\" width=\\\"1\\\"/></li><li><a href=\\\"http://tweakers.net/nieuws/59298/nanodraden-kunnen-energie-opwekken-in-bloedbaan.html\\\">Nanodraden kunnen energie opwekken in bloedbaan</a><br>Een groep Amerikaanse wetenschappers heeft een methode bedacht om met behulp van nanodraden elektriciteit op te wekken. De generators zouden in de bloedbaan stroom voor biomedische apparatuur op kunnen wekken.<img src=\\\"http://feeds2.feedburner.com/~r/tweakers/mixed/~4/HbDFnS0jVdA\\\" height=\\\"1\\\" width=\\\"1\\\"/></li><li><a href=\\\"http://tweakers.net/nieuws/59296/apple-werkt-aan-biometrische-beveiliging-voor-iphone.html\\\">Apple werkt aan biometrische beveiliging voor iPhone</a><br>Uit een aanvraag die Apple bij het Amerikaanse patentbureau indiende, zou blijken dat het bedrijf aan een gebruikersvriendelijke methode werkt om zijn hardware, waaronder iPhones, van biometrische beveiliging te voorzien.<img src=\\\"http://feeds2.feedburner.com/~r/tweakers/mixed/~4/NppGQz--E5k\\\" height=\\\"1\\\" width=\\\"1\\\"/></li><li><a href=\\\"http://tweakers.net/nieuws/59295/mozilla-brengt-firefox-308-vervroegd-uit.html\\\">Mozilla brengt Firefox 3.0.8 vervroegd uit</a><br>Mozilla heeft Firefox 3.0.8, die oorspronkelijk voor begin april was gepland, vervroegd uitgebracht. Daarmee hoopt de browserbouwer een tweetal ernstige beveiligingslekken te hebben gedicht. IE8 en Safari zijn nog niet gepatcht.<img src=\\\"http://feeds2.feedburner.com/~r/tweakers/mixed/~4/YDHHvQu7G08\\\" height=\\\"1\\\" width=\\\"1\\\"/></li></ul>";
					//System.out.println(res);
					String res2 = "";
					try {
						url = new URL("http://www.widgetengine.be/downloads/script/rss2/rss-direct.php?url=" + rssfeed);
						BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
						
						String inputLine = "";
						while ((inputLine = in.readLine()) != null)
						    res2 += inputLine;

							
						res2 = res2.replaceAll("\"", "'");
						System.out.println(res2);
						in.close();
					} catch (MalformedURLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}

					mWebView.loadUrl("javascript:wave(\"" + res2 + "\")");// " + ret + ")");
				}
			});

		}
	}

	/**
	 * Provides a hook for calling "alert" from javascript. Useful for debugging
	 * your javascript.
	 */
	final class MyWebChromeClient extends WebChromeClient {
		@Override
		public boolean onJsAlert(WebView view, String url, String message,
				JsResult result) {
			Log.d(LOG_TAG, message);
			result.confirm();
			return true;
		}
	}
}
